9
תגובות
שלום, איך אני יכול לאחסן תמונות בבסיס נתונים? (טופס ההעלאה, אחסון במסד וההצגה של התמונה.)

9 תשובות

avatar ענה OrelBeY ב 30 לאפריל 2013 #

שלום, יוני (?).
קודם כול, כדאי מאוד לשנות את כותרת השאלה למשהו אחר מ"שאלה חשובה", כדי שאנשים יבינו על מה השאלה.
השאלה עצמה לא כל כך ברורה - אתה רוצה ללמוד איך לפתח טופס HTML או שאתה רוצה לדעת איך לאחסן תמונה בבסיס נתונים?

avatar ענה yonikal56 ב 01 למאי 2013 #

XHTML אני יודע אני רוצה לדעת איך נראה התמונה במסד נתונים ואיך מעלים לשם בכלל ואיך גורמים לזה שיהיה רק תמונות

avatar ענה OrelBeY ב 01 למאי 2013 #

אתה צריך לאחסן אותה בצורה הבינרית שלה, ואת זה אתה יכול לעשות בעמודה מסוג blob. כשאתה רוצה להדפיס אותה ללקוח, פשוט תוסיף header של סוג התמונה, והדפדפן כבר ידע איך לפענח את זה. קרא את המאמר הבא.

ערכתי את השאלה שלך. עכשיו היא ברורה יותר. :-)

avatar ענה shlomo120 ב 02 למאי 2013 #

עדיף להעלות את התמונה לתיקיה כלשהיא ולאחסן רק את הנתיב שלה .
ככה אתה לא מעמיס על המסד ...

avatar ענה yonikal56 ב 02 למאי 2013 #

איך עושים את זה? בקשור מסוים משלו כל פעם לפתוח? אני מתכנת PHP בינוני ואין לי רעיון לפתרון

avatar ענה Elad65 ב 02 למאי 2013 #

אתה יכול כמו שאמרו, לשמור את התמונה בתיקייה מסויימת ואז בטבלה שלך בבסיס נתונים, לשמור את המיקום של התמונה
לדוגמא: images/cool_picture.png,
ואז עם PHP לשלוף את הכתובת של התמונה מהבסיס לתוך תגית img בצורה כזאת לדוגמא:

<?php
echo '<img src="'. $dbRow['image'] .'" />';
?>

ככה אתה פשוט פותח את התמונה ששמורה על השרת בעעזרת הנתיב שלה ששמור בתוך הבסיס נתונים.
חסרון אחד של הדרך הזאת הוא שאם התמונה נמחקת, הנתיב עדיין קיים ולכן יש צורך לבדוק אם גם הקובץ עדיין קיים כדי שלא יהיו קוביות ריקות במקום תמונות.

יש עוד דרך שהשתמשתי בה פעם ואיתה אתה פשוט שומר את התמונה עצמה בטבלה,
מה שעושים זה לקרוא את הקובץ של התמונה עם PHP, להצפין אותו בעזרת הפונקציה base64_encode ולשמור את זה בבסיס הנתונים, תצא מחרוזת ארוכה כזאת שאפשר לשמור כטקסט.
כשתרצה להציג את התמונה תכניס את המחרוזת לתוך תג img בצורה הבאה:
<?php
$image = file_get_contents('images/cool_picture.png');
$image = base64_encode($image);
echo '<img src="data:image/png;base64,'. $image .'" />';
?>

בהנחה שזו תמונה מסוג png כמובן, לסוגים אחרים פשוט אפשר לשנות את השם בקוד.
השיטה הזאת טובה אם אתה רוצה לצמצם בקשות מהשרת, אבל מצד שני היא מנפחת את הגודל של העמוד.

avatar ענה OrelBeY ב 02 למאי 2013 #

היתרונות והחסרונות של שמירת תמונות במערכת קבצים לעומת שמירתן בבסיס נתונים נמצאים במאמר שאליו הפניתי אותך.
אל תשכח שאם אין לך בעיה שהתמונה תהיה בקובץ נפרד ("כאילו" היא כן במערכת הקבצים), אתה לא צריך להשתמש ב-base64. :-)

avatar ענה yonikal56 ב 03 למאי 2013 #

אוקיי אני רוצה את זה על מנת לבנות פינה שאנשים יכולים להעלות אליה תמונות אז מה שאני צריך לעשות זה מה שהשני כי אני רוצה שישמר על הבסיס נתונים ויראה לכולם אבל אני צריך לשנות מהמשתנה של הIMAGES למשתנה $_FILE כי הם יעלו מהמחשב אז זו הדרך? ואיך עושים שיוכלו להעלות רק תמונות רגילות.?

avatar ענה yonikal56 ב 22 ליולי 2013 #

כבר אני יודע.